I.FHIR概要
因為一些緣故接觸到HL7 FHIR這個醫資領域的新標準,先前我對於醫學資訊領域是完全不懂,
過去數個月的我對這標準既陌生又無助,然後這個標準能找到的學習內容零碎又抽象,
在如同無頭蒼蠅一樣瘋狂的搜尋跟找影片來學了一段時間之後,我才比較清楚這個標準大致上在談些什麼。
之所以開始研究的原因是工作相關的需求,相比正式規規矩矩的FHIR教學文章,
這個系列文更像是在整理我自己接觸,學習這個標準到目前投入應用的領域,
以及如何解決工作上遇到的問題所撰寫的,但這次我撰寫的側重面還處在很前期的範圍,
畢竟轉換成FHIR格式的資料這件事情很基礎,但也很重要。
簡單來說這篇系列文想要解決的問題是:我已經有這些醫學資料了,我該怎麼把它組合成FHIR,
不只是格式程式上的轉換,還有概念實作上的流程該怎麼走。
因為FHIR這個領域涉及到的範圍實在非常廣,
對於醫療專業人員來說,程式設計或是欄位安排,系統建置等資訊專業的領域知識搞得他們一頭霧水,
而資訊專業人員不懂醫療相關的知識術語,或是相關的醫療代碼,這使得FHIR的學習曲線十分陡峭,
在系統建置面上需要醫療專業人員與資訊專業人員協作,
而以一般人的角度來看,FHIR這個醫資標準事實上已經藏在你的手機一段時間了,
無論是Google Healthcare,或是Apple Health Records,
其醫療資訊紀錄的標準也正是使用FHIR。
這也正是我認為這個標準對於一般人而言也有機會接觸或是應用它,若對該標準有所了解,
日後有相關的醫療需求時,若已有準備相關的FHIR檔案,
可以加速無論是看診掛號或是保險理賠的流程,也就不容易延誤就醫跟搶救判斷的黃金時間。
FHIR(Fast Healthcare Interoperability Resources,快捷式醫療服務互操作資源)
是由HL7協會(國際健康資訊交換第七層協定協會)制定的,
它的前身是HL7 v2, HL7 v3標準,HL7 v2已經全世界推行多年,包括歐美日韓等地,
經過了近30年的增修補充,在使用上已有諸多的不便與不足,
因此需要一個更通盤考量,更易於使用交換的醫資標準。
FHIR主要聚焦在幾個特色上:
單一化,標準化的資料結構:
FHIR將整個醫療臨床,周邊服務等都定義成單一的資料結構,且模組化設計,
透過不同的分類資源可以清楚描述一個醫療事件或個體的狀態
相比CDA R2等醫資標準格式只能限定使用XML格式,
FHIR能支援多種格式的如FHIR, Turtle,且資訊描述也較HL7 v2清晰且好讀
因為標準化的緣故,各機構的系統開發人員也不需要為了資料庫規模設計、
欄位制定等infra作業煩惱,僅需將其儲存起來即可
RESTful API的導入:
FHIR將醫療資訊的交換規範於RESTful API,標準化的API使用讓資料交換變得非常簡單,
醫事機構或保險單位只需要透過REST就能交換對方的資料,
因為支援多個格式加上RESTful API,事實上所有裝置與應用程式都能很輕鬆的存取上傳資料,
降低不同單位、機構間的溝通成本。
Terminology的使用:
醫學名詞、術語的標準化是醫資標準中非常重要的一環,
因為臨床上醫事人員對於描述一個醫療事件(疾病、症狀等)會有很多不同的角度跟考量,
這樣子的分歧會讓執行交換的單位或醫事人員對於現況會有誤判的可能,
FHIR和前面提到的HL7 v2等都有大量使用統一的醫學代碼,包括LOINC, SNOMED, RxNorm等,
透過醫學術語的標準化才能讓拿到這份資料的人員有初步客觀的內容判斷。
以上三點基本上就是現在醫學資訊交換的困境,從醫學中心到地方診所,
各自的醫療系統都是各自開發且獨立管理的,
這讓資訊的交換很大程度依然依賴人為手寫或繕打,對於轉院或是檢驗檢查來說,
因為資料的不互通,重複檢查等造成許多不必要的浪費。
過度標準化帶來的是使用上的不便與僵化,因此FHIR也提供Extension作為欄位的補充定義,
能夠讓需要補充的資訊能夠填寫於此而不必捨棄
今年(2025)開始,衛福部健保署正式啟用癌症用藥事前審查FHIR上傳機制,
接下來要推行一般事前審查及重大傷病以FHIR格式上傳,在這之前,
國泰醫院也早已投入使用FHIR作為其醫療體系與金融體系溝通的管道,
對於從業人員來說,學習這個標準或以此標準進行開發實作是越來越重要的課題,
FHIR還有一個筆者認為非常難學習的原因,
因為多數的FHIR教學與實際實作應用的差距巨大,多數的知識認知建立在實際按照實作指引(IG)實作的過程,
且因為各機構單位對於實現這個標準的內容並應用的路徑大相逕庭,
在初期學習上會很難知道自己應該走哪一條路,採用哪一個方案落地,
基本上都是大量試錯中得到的結果。撰寫這篇系列文的主要想法也是希望拋磚引玉,
降低讀者在學習這個標準的前期階段陡峭的學習曲線。
因為目前大多數的教學文章主要還是以英文為主,
中文方面目前較完整的部分較少,以李修安博士所開的FHIR工作坊、
Lorex Yang在hackmd寫的教學文章比較完整
英文方面,chat.fhir.org是hl7.fhir的官方論壇,
無論是FHIR Server的架設或是FHIR本身知識點的釐清都很有幫助,
每年也會有一場devdays的年度FHIR實體論壇,通常能在這上面看到最新的知識或開發產品的發表,
非常推薦在基礎了解後去翻閱這幾個站點的內容。
對於正式進入學習本篇系列文之前,你可能需要了解或準備...:
1. HL7 FHIR
2. @lorex8711 - Hackmd.io
3. 台智雲 - FHIR工作坊
4. FUME - Outburn.IL
在這邊要非常感謝Lorex的文章對我的幫助,這次想撰寫文章也是受到您的啟發。
本篇系列文的預計編排目錄如下:
(題目之間會有些許順序或內容更動,若完賽再統一整稿)
I.FHIR概要
01 FHIR 簡介
02 FHIR 概念
II.FHIR Resource
03 FHIR Resource初探, flags, cardinality, reference...
04 FHIR 其餘Resource簡要說明(Observation, Encounter...)
05 FHIR Questionnaire, fhirpath-lab, LHC等view介紹
III.FHIR 周邊內容
06 Terminology(CodeSystem, ValueSet)、
LOINC, SNOMED, RxNorm與ICD-10等國際標準代碼介紹
07 Dicom影像介紹
08 Implementation Guide、Profile
IV.後端基礎操作
09 RESTFUL API,PostMan基本使用
10 HL7 FHIR Search
V.FHIR Server
11 FHIR Server介紹,HAPI, Aidbox, Firely等
12 HAPI FHIR on Docker 建置
13 HAPI FHIR 操作說明 CRUD與Swagger,POSTMan與HAPI FHIR互動的方式
14 HAPI FHIR 周邊設定(安控,攔截器,負載),HAPI Validate可能的問題(data lost)
15 FHIR Validation(官方Validator、Inferno)
VI.FUME
16 FUME 簡介,其他Converter概述(firely SDK)
17 FUME Designer
18 FUME Community 安裝, 環境設定
19 FUME Mapping Language(FLASH)
20 實際建立一筆Patient的FUME FLASH Map
21 JSONata基礎操作(conditional, string, array, object execution)
22 JSONata進階操作($merge, $exists, $zip, $function...)
23 FUME FHIR Function($resolve, $search, $literal)
24 組合Bundle
VII.IG應用實戰
25 TWPAS 實戰簡介,思路分析
26 實際閱讀IG,整理出resource清單
27 撰寫FUME,組合resource成Bundle
28 測試驗證,優化建議(如何偷Input欄位,減少所需負擔)
VIII.總結
29 轉換後才是挑戰:SMART APP, CDS Hook, CQL等
30 完賽心得